extends ReferenceRect

@onready var itemImage = $ItemImage
@onready var label = $Label
@onready var util = Util.new()

var propList = []

@export var stackSize = 5	## 堆叠数量
	
func add(obj: Node2D) -> bool:
	# 堆叠数量到达上限
	if int(label.text) >= stackSize:
		return false
	
	var image = util.findOne("$[Sprite2D]", obj).texture.resource_path
	# 如果检测到该背包首次拾取, 则加载图片并道具数量 + 1
	if itemImage.texture == null:
		# 存储道具贴图, 用于背包展示
		itemImage.texture = load(image)
		label.text = "1"
		# 存储道具本体对象
		propList.append(obj)
		return true
		
	# 若已经拾取过该物品, 则数量累加
	elif itemImage.texture.resource_path == image:
		# 累加背包值
		label.text = str(int(label.text) + 1)
		# 存储道具本体对象
		propList.append(obj)
		return true
	
	# 最后的情况就是, 拾取的物品不能进行堆叠
	else:
		return false


## 消耗道具, 其实就是使用道具
func consume(player):
	var prop = propList.pop_front()
	
	if prop != null:
		prop.use(player, util)
		label.text = str(int(label.text) - 1)
		
		if int(label.text) <= 0:
			itemImage.texture = null
			label.text = ""
